/*
 * IteradorIndice.h
 *
 *  Created on: 23/10/2011
 *      Author: diego
 */

using namespace std;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include "Lista.h"
#include "Nodo.h"
#include "IteradorLista.h"
#include "ElementoInexistenteException.h"
#include "Registros.h"
#include "codigosDelta.h"
#include "BitReader.h"
#include "Configuracion.h"
#include "Constantes.h"

#ifndef ITERADORINDICE_H_
#define ITERADORINDICE_H_

class IteradorIndice {
	char* termino_anterior;
	char* termino_actual;
//	reg_indice_fijo reg_indice;
//	reg_docs_variable* reg_docs;

	int paso;

	ifstream* indice;
	ifstream* terminos;
	ifstream* header;
	BitReader* docs;

	int cant_registros;
	int pos_actual;

	void reconstruirTermino(reg_indice_fijo reg, char* buffer);

public:
	IteradorIndice(string prefijo);
	IteradorIndice();
	int getCantTerminos();
	void setPaso(int p);
	int getPosicion();
	void setPosicion(int pos);
	bool tieneSiguiente();
	super_reg* proximoRegistro();
	virtual ~IteradorIndice();
};

#endif /* ITERADORINDICE_H_ */
